web3.js@0.2x.x Contract Events
var event = myContractInstance.MyEvent(filterObject [, additionalFilterObject])
コントラクトのイベントを監視します。
イベントはフィルタのように使用することができます。
イベントはフィルタと同様のメソッドを持ちます。
パラメータ
1. Object
ログをフィルタするために使用する Indexed return values
例: {'valueA': 1, 'valueB': [myFirstAddress, mySecondAddress]}
デフォルトでは、すべてのフィルタの値は null
これは、このコントラクトに送信されたどのような対応のイベントにもマッチすることを意味します。
2. Object
追加のフィルタオプション
デフォルトでは、フィルタオブジェクトはコントラクトアドレスをセットする address フィールドを持ちます。
また、最初の topic はイベントのシグネチャになります。
3. Function
オプショナル
コールバック関数を渡した場合は、即座にイベントの監視を始めるので、myEvent.watch(function(){}) を呼ぶ必要はありません。
コールバックの戻り値
Object - つぎのイベントオブジェクト
address : String
このログの発生元となるアドレス
32バイト
args : Object
イベントから渡された引数
blockHash : String
このログが追加されたブロックのハッシュ
32バイト
未承認ブロックの場合は null
未承認のログの場合は null
blockNumber : Number
このログが追加されたブロックのブロック番号
未承認ブロックの場合は null
未承認のログの場合は null
logIndex : Number
ブロック内のログのインデックス位置の整数値
未承認のログの場合は null
event : String
イベント名
removed : bool
true の場合、このイベントが作成されたトランザクションがブロックチェーンから取り除かれたことを示します。
孤児ブロックのため
#todo どういうメカニズムでこういうことが起きるのか調べる トランザクションが拒否されたためにブロックチェーンに追加されなかった場合にも true がセットされます。
transactionIndex : Number
ログが作成されたトランザクションのインデックス位置の整数値
transactionHash : String
ログが作成されたトランザクションのハッシュ
32バイト
使用方法
code:ContractEvents.js
var event = myContractInstance.MyEvent({valueA: 23} additionalFilterObject)
// watch for changes
event.watch(function(error, result){
if (!error)
console.log(result);
});
// Or pass a callback to start watching immediately
var event = myContractInstance.MyEvent({valueA: 23} additionalFilterObject , function(error, result){ if (!error)
console.log(result);
});
サンプルコード
code:example.js
var MyContract = web3.eth.contract(abi);
var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9');
// watch for an event with {some: 'args'}
var myEvent = myContractInstance.MyEvent({some: 'args'}, {fromBlock: 0, toBlock: 'latest'});
myEvent.watch(function(error, result){
...
});
// would get all past logs again.
var myResults = myEvent.get(function(error, logs){ ... });
...
// would stop and uninstall the filter
myEvent.stopWatching();
参考